import pandas as pd
import os
import re

# 文件夹路径
input_folder = r'c:\Users\admin\Desktop\homework\课程信息'

# 存储所有可能的课程名称
alternative_courses = set()

# 遍历所有Excel文件
for filename in os.listdir(input_folder):
    if filename.endswith('.xls'):
        file_path = os.path.join(input_folder, filename)
        print(f'\n=== 分析文件: {filename} ===')
        
        # 读取Excel文件
        df = pd.read_excel(file_path)
        
        # 将整个DataFrame转换为字符串，然后提取所有可能的课程名称
        df_str = df.to_string()
        
        # 尝试多种方式提取课程名称
        # 方式1: 提取所有在/(之前的文本，这些可能是课程名称
        potential_courses = re.findall(r'([^/]+)/(?:\([^)]+\))?[^/]+/\s*[^/]+/[^/]+/\d+', df_str)
        
        # 方式2: 提取所有在“实践课程：”或“其他课程：”之后的文本
        potential_courses += re.findall(r'(?:实践课程|其他课程)：([^★☆]+)', df_str)
        
        # 方式3: 提取所有可能的课程名称模式（包含中文和括号）
        potential_courses += re.findall(r'([\u4e00-\u9fa5()（）\s]+)', df_str)
        
        # 清理和筛选课程名称
        for course in potential_courses:
            course = course.strip()
            if course and len(course) > 2 and not any(word in course for word in ['节次', '周次', '地点', '教师', '人数', '上午', '下午', '晚上', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期日', '专业', '打印时间', '注--', '2024-2025', '2025-2026', '24软件1课表']):
                alternative_courses.add(course)

# 显示所有可能的课程名称
print(f'\n=== 所有可能的课程名称 ({len(alternative_courses)}个) ===')
for course in sorted(alternative_courses):
    print(f'- {course}')

# 与之前找到的课程对比
old_courses = {'Javascript编程技术', 'Linux操作系统基础', 'Python程序设计', '中华文化选读', '习近平新时代中国特色社会主义思想概论', '人工智能导论', '体育与健康（一）', '军事理论', '劳动教育（理论部分）', '国家安全教育', '大学生创新创业基础', '大学生安全教育(一)', '大学生安全教育(二)', '大学生心理健康教育', '大学英语（一）', '大学英语（二）', '形势与政策（一）', '形势与政策（三）', '形势与政策（二）', '思想道德与法治（一）', '思想道德与法治（二）', '改革开放史', '数据库技术及应用', '暑期社会实践', '毛泽东思想和中国特色社会主义理论体系概论', '海南自由贸易港建设', '程序设计基础', '网页设计与制作', '美育', '职业发展与就业指导', '计算机应用技术', '软件工程', '软件测试技术', '面向对象程序设计'}

print(f'\n=== 新增的课程名称 ===')
new_courses = alternative_courses - old_courses
for course in sorted(new_courses):
    print(f'- {course}')